####################################################
# Author: Leon
# Date: 2013-04-26
# Function: 该程序从串口读取数据，根据包的格式来分包
#
# 包格式如下
#
#  |\xFE|Len|Data|XOR|
#
#  	\xFE为包的开始标志，Len表示Data的长度，长度为一个
#  	字节，XOR为Len和Data的异或的值，长度一个字节
#
####################################################

pkt = None
status = 'start'
length = None

while True:
	pkt += device.read(device.inWaiting())

	while len(pkt):
		if status == 'start':
			if pkt[0] == '\xfe':
				status = 'readlen'
			else:
				status = 'start'
				pkt = pkt[1:]
		elif status == 'readlen':
			if len(pkt)<2:
				break
			length = pkt[1]
			status = 'readdata'
		elif status == 'readdata':
			if len(pkt)<length+3:
				break
			else:
				#整个包为pkt[:length+3]
				process(pkt[:length+3])
				pkt = pkt[length+3:]